package com.wargameproject.unite;

import com.wargameproject.Case;
import com.wargameproject.Partie;

public abstract class UniteTerrestre extends Unite {

	public void deplacer(Case c) {
		if (c.cliquableDeplacement && this.peutBouger) {
			c.unite = this;
			if(this.aDrapeau) {
				c.drapeau = this.position.drapeau;
				this.position.drapeau = null;
				if(c.presenceBase() && c.base.joueur == Partie.joueurCourant && !c.terrain.estAquatique) {
					this.aDrapeau = false;
				}
			}
			else {
				if(c.presenceDrapeau() && (!c.presenceBase() || (c.presenceBase() && (c.base.joueur != Partie.joueurCourant || c.terrain.estAquatique)))) {
					this.aDrapeau = true;
				}
			}
			this.position.unite = null;
			this.position = c;
			this.peutBouger = false;
			this.casesCliquables();
		}
	}

	public void casesCliquables() {
		Partie.brouillardDeGuerre();
		Partie.casePrecedente = Partie.caseCliquee;
		if(this.peutBouger) {
			this.position.casesCliquablesDeplacementTerrestre(this.mouvement);
		}
		if(this.peutAttaquer) {
			this.position.casesCliquablesUniteEnnemie(this.porteeAttaque);
		}
		Partie.clickSurUnite = true;
		this.position.cliquableDeplacement = true;
		Partie.grille.invalidate();
		if (!Case.caseAttaquePossible && !this.peutBouger) {
			this.peutAttaquer = false;
			Partie.brouillardDeGuerre();
		}
	}
	
	public void brouillardDeGuerre() {
		this.position.brouillardDeGuerre(this.visibilite+this.position.terrain.bonusVisibilite);
	}
	
	public void soigner() {
		this.vie = vie + this.soin;
		if(this.position.presenceBase()) {
			this.position.base.soigner(this);
		}
		if(this.vie > this.viemax) {
			this.vie = this.viemax;
		}
		//this.peutAttaquer = false;
		//this.peutBouger = false;
	}
}
